package config

import (
	"os"
	"strconv"
)

// InitConfigFromEnv 从环境变量中获取配置参数
func InitConfigFromEnv(config *ConfigOptions) {
	fetchStringConfig("TYPE", &config.Type)
	fetchStringConfig("NATIVE_PATH", &config.NativePath)
	fetchStringConfig("NATIVE_NAME", &config.NativeName)
	fetchStringConfig("NATIVE_TYPE", &config.NativeType)
	fetchStringConfig("NACOS_HOST", &config.Nacos.Host)
	if port := os.Getenv("NACOS_PORT"); port != "" {
		n, err := strconv.Atoi(port)
		if err != nil {
			panic(err)
		}
		config.Nacos.Port = n
	}
	fetchStringConfig("NACOS_NAMESPACE", &config.Nacos.Namespace)
	fetchStringConfig("NACOS_USER", &config.Nacos.User)
	fetchStringConfig("NACOS_PASSWORD", &config.Nacos.Password)
	fetchStringConfig("NACOS_DATAID", &config.Nacos.DataId)
	fetchStringConfig("NACOS_GROUP", &config.Nacos.Group)
}

func fetchStringConfig(envKey string, field *string) {
	if os.Getenv(envKey) != "" {
		*field = os.Getenv(envKey)
	}
}
